package com.southminority.ethnic.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用户类型枚举
 * 
 * @author SouthMinority
 */
@Getter
@AllArgsConstructor
public enum UserTypeEnum {

    /**
     * 超级管理员
     */
    SUPER_ADMIN(1, "超级管理员"),

    /**
     * 管理员
     */
    ADMIN(2, "管理员"),

    /**
     * 研究员
     */
    RESEARCHER(3, "研究员"),

    /**
     * 团队成员
     */
    TEAM_MEMBER(4, "团队成员"),

    /**
     * 普通用户
     */
    USER(5, "普通用户"),

    /**
     * 访客
     */
    GUEST(6, "访客");

    /**
     * 类型码
     */
    private final Integer code;

    /**
     * 类型描述
     */
    private final String description;

    /**
     * 根据类型码获取枚举
     */
    public static UserTypeEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (UserTypeEnum userType : values()) {
            if (userType.getCode().equals(code)) {
                return userType;
            }
        }
        return null;
    }

    /**
     * 判断是否为管理员类型
     */
    public static boolean isAdmin(Integer code) {
        return SUPER_ADMIN.getCode().equals(code) || ADMIN.getCode().equals(code);
    }

    /**
     * 判断是否为研究员类型
     */
    public static boolean isResearcher(Integer code) {
        return RESEARCHER.getCode().equals(code);
    }

    /**
     * 判断是否为团队成员类型
     */
    public static boolean isTeamMember(Integer code) {
        return TEAM_MEMBER.getCode().equals(code);
    }

    /**
     * 判断是否为普通用户类型
     */
    public static boolean isUser(Integer code) {
        return USER.getCode().equals(code);
    }

    /**
     * 判断是否为访客类型
     */
    public static boolean isGuest(Integer code) {
        return GUEST.getCode().equals(code);
    }
}
